
#ifndef SX_FRAME_H
#define SX_FRAME_H

namespace Sx {
namespace Multimedia {
namespace Animation {

template <typename Real>
class Frame {
public:
	typedef Real FrameUnit;

	Frame(Real position = 0);
	virtual ~Frame();

	void setPosition(Real position);
	Real& position();
	Real getPosition() const;

protected:
	/* 
	 * 1-Dimensional location of the frame. There are no limitations on the
	 * semantics of the position; it simply represents a place in time or
	 * an index to a position or time.
	 */
	Real pos;
};

}

}

}

template <typename Real>
Sx::Multimedia::Animation::Frame<Real>::Frame(Real position) {
	this->pos = position;
}

template <typename Real>
Sx::Multimedia::Animation::Frame<Real>::~Frame() {}


template <typename Real>
void Sx::Multimedia::Animation::Frame<Real>::setPosition(Real position) {
	this->pos = position;
}

template <typename Real>
Real& Sx::Multimedia::Animation::Frame<Real>::position() {
	return this->pos;
}

template <typename Real>
Real Sx::Multimedia::Animation::Frame<Real>::getPosition() const {
	return this->pos;
}

#endif
